package com.zh.auth.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zh.auth.domain.dto.PageRoleDto;
import com.zh.web.domain.auth.entity.Role;
import com.zh.web.domain.auth.vo.RoleVo;
import org.apache.ibatis.annotations.MapKey;
import org.mapstruct.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface RoleMapper extends BaseMapper<Role> {
    List<RoleVo> listRole(IPage<RoleVo> page, PageRoleDto pageRoleDto);

    /**
     * 根据用户ID查询角色拥有编码集合
     *
     * @param userId 用户ID
     * @return 角色编码集合
     */
    List<Integer> findRoleCodesByUserId(Long userId);

    /**
     * 查询角色编码与角色名称的映射
     * @return List
     */
    @MapKey("role_name")
    List<Map<String, Object>> findRoleName2Code();

    Integer permanentlyDeleteByIds(List<Integer> codes);

    Integer selectCountByCode(Integer code);

    void permanentlyDelete();
}
